app/api/files/[fileId]/route.ts (12 lines of code) (raw):
import { openai } from "@/app/openai";
// download file by file ID
export async function GET(_request, { params: { fileId } }) {
const [file, fileContent] = await Promise.all([
openai.files.retrieve(fileId),
openai.files.content(fileId),
]);
return new Response(fileContent.body, {
headers: {
"Content-Disposition": `attachment; filename="${file.filename}"`,
},
});
}